home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_200 / 281_01 / lib_demo.c < prev    next >
C/C++ Source or Header  |  1988-10-05  |  26KB  |  852 lines

  1. /*  lib_demo.c
  2.  *
  3.  *  UCLIB 5.00 Demo program
  4.  *
  5.  */
  6.  
  7. #include <stdio.h>
  8.  
  9. #include "uc_defs.h"
  10. #include "uc_glob.h"
  11. #include "uc_proto.h"
  12. #include "uc_key.h"
  13.  
  14. #include "wn_defs.h"
  15. #include "wn_glob.h"    /* used for declaration of sound_on  */
  16.  
  17.  
  18. /*
  19.  *  There are not many comments in this program since the comments
  20.  *  for each function are effect located in the reference guide.
  21.  *  Please refer to that file as you go through this code.  It
  22.  *  should provide you with a complete overview of each function
  23.  *  and how it may be called and used.    Sorry but no complete
  24.  *  manual exists for this version.  Registered users will receive
  25.  *  a disk containing the test programs used by the author in
  26.  *  developing the library.  If you feel a full manual would be
  27.  *  of help drop a line to the author.    If enough such requests
  28.  *  are received a complete manual will be considered for future
  29.  *  versions of the library.
  30.  *
  31.  */
  32.  
  33.  
  34. char   test_str[] = "     This is a test string     ";
  35.  
  36. char   tmp_str[ 100 ];
  37.  
  38.  
  39. void main( int argc, char argv[]  )
  40. {
  41.    int    i;
  42.    long il;
  43.    char in_str[ 81 ];
  44.    int    cstart;
  45.    int    cstop;
  46.    char *str_mon();
  47.    int    back;
  48.    int    fore;
  49.  
  50.  
  51.    uc_init();        /* Inititalize various system variables */
  52.    if ( mouse_exist )
  53.       m_flagdec();
  54.  
  55.    if ( argc > 2 )
  56.       sound_on = 0;
  57.  
  58.    cls_clr( mk_att( BLUE, WHITE + BRIGHT ) );
  59.  
  60.  
  61.    c_printf( mk_att( BLUE, BROWN + BRIGHT ),
  62.    "\n\n                          ┌──────────────────────┐\n" );
  63.    c_printf( mk_att( BLUE, BROWN + BRIGHT ),
  64.    "                          │   Unicorn Software   │\n" );
  65.    c_printf( mk_att( BLUE, BROWN + BRIGHT ),
  66.    "                          │     P.O. Box 3214    │\n" );
  67.    c_printf( mk_att( BLUE, BROWN + BRIGHT ),
  68.    "                          │      Kirkland Wa     │\n" );
  69.    c_printf( mk_att( BLUE, BROWN + BRIGHT ),
  70.    "                          │      98083-3214      │\n" );
  71.    c_printf( mk_att( BLUE, BROWN + BRIGHT ),
  72.    "                          │    (206) 823-4656    │\n" );
  73.    c_printf( mk_att( BLUE, BROWN + BRIGHT ),
  74.    "                          └──────────────────────┘\n\n" );
  75.  
  76.    c_printf( mk_att( BLUE, MAGENTA + BRIGHT ),
  77.    "             ════════════════════════════════════════════════════\n\n" );
  78.  
  79.    c_printf( mk_att( BLUE, RED ),
  80.    "                Welcome to version 5.00 of the Unicorn Library\n\n" );
  81.  
  82.    c_printf( mk_att( BLUE, WHITE + BRIGHT ),
  83.  "\t\t   This demo program will illustrate " );
  84.  
  85.  
  86.    c_printf( mk_att( BLUE, BROWN + BRIGHT ),
  87.    "some " );
  88.  
  89.  
  90.    c_printf( mk_att( BLUE, WHITE + BRIGHT ),
  91.    "of the new library's\n" );
  92.  
  93.    c_printf( mk_att( BLUE, WHITE + BRIGHT ),
  94.  "\t\t   capabilities.  It is impossible to show everyone of the " );
  95.  
  96.    c_printf( mk_att( BLUE, BROWN + BRIGHT ),
  97.    "over\n\t\t   300 functions " );
  98.  
  99.    c_printf( mk_att( BLUE, WHITE + BRIGHT ),
  100.  "contained in the library.  You might also try\n" );
  101.  
  102.    c_printf( mk_att( BLUE, WHITE + BRIGHT ),
  103.  "\t\t   the programs `" );
  104.  
  105.    c_printf( mk_att( BLUE, GREEN ),
  106.    "WINDOW.EXE" );
  107.  
  108.    c_printf( mk_att( BLUE, WHITE + BRIGHT ),
  109.    "' and `" );
  110.  
  111.    c_printf( mk_att( BLUE, GREEN ),
  112.    "TDATA.EXE" );
  113.  
  114.    c_printf( mk_att( BLUE, WHITE + BRIGHT ),
  115.    "' which demonstrate\n" );
  116.  
  117.    c_printf( mk_att( BLUE, WHITE + BRIGHT ),
  118.  "\t\t   the windowing and data entry portions of the library.      \n" );
  119.  
  120.    c_printf( mk_att( BLUE, WHITE + BRIGHT ),
  121.  "\t\t   At several points during the demo the program will stop and\n" );
  122.  
  123.    c_printf( mk_att( BLUE, WHITE + BRIGHT ),
  124.  "\t\t   wait.  Whenever this occurs simply press a key to continue.\n" );
  125.  
  126.    uc_key();
  127.  
  128.    c_printf( mk_att( BLUE, BROWN + BRIGHT ),
  129.  "\n\t\t   There now that wasn't so hard!  Just remember to press a\n" );
  130.  
  131.    c_printf( mk_att( BLUE, BROWN + BRIGHT ),
  132.  "\t\t   key whenever the program has stopped.\n" );
  133.  
  134.    uc_key();
  135.  
  136.    cls_clr( mk_att( RED, WHITE + BRIGHT ) );
  137.  
  138.    c_printf( mk_att( RED, MAGENTA + BRIGHT ),
  139.  "\n\t\tFirst we will look at the three primary screen control functions.\n\n" );
  140.  
  141.    c_printf( mk_att( RED, BROWN + BRIGHT ),
  142.  "\t1. " );
  143.  
  144.    c_printf( mk_att( RED, WHITE + BRIGHT ),
  145.  "A full color version of the standard printf function.  This\n" );
  146.  
  147.    c_printf( mk_att( RED, WHITE + BRIGHT ),
  148.  "\t\thas been used to provide all the screen output you have seen up\n" );
  149.  
  150.    c_printf( mk_att( RED, WHITE + BRIGHT ),
  151.  "\t\ttill now.  It works the same as the normal printf, accepting all\n" );
  152.  
  153.    c_printf( mk_att( RED, WHITE + BRIGHT ),
  154.  "\t\tthe usual printf formatting parameters with two exceptions.  It\n" );
  155.  
  156.    c_printf( mk_att( RED, WHITE + BRIGHT ),
  157.  "\t\trequires a first parameter that is the attribute desired and\n" );
  158.  
  159.    c_printf( mk_att( RED, WHITE + BRIGHT ),
  160.  "\t\tsecondly will not scroll the screen when the bottom line is\n" );
  161.  
  162.    c_printf( mk_att( RED, WHITE + BRIGHT ),
  163.  "\t\treached.  Other than this it works the same including a variable\n" );
  164.  
  165.    c_printf( mk_att( RED, WHITE + BRIGHT ),
  166.  "\t\tnumber of arguments.                                            \n" );
  167.  
  168.    c_printf( mk_att( RED, BROWN + BRIGHT ),
  169.  "\n\t2. " );
  170.  
  171.    c_printf( mk_att( RED, WHITE + BRIGHT ),
  172.  "A Clear screen function that allows clearing the screen to a\n" );
  173.  
  174.    c_printf( mk_att( RED, WHITE + BRIGHT ),
  175.  "\t\tparticular attribute.  It has been used to clear the screen in this\n" );
  176.  
  177.    c_printf( mk_att( RED, WHITE + BRIGHT ),
  178.  "\t\tdemo.                                                           \n" );
  179.  
  180.  
  181.  
  182.    c_printf( mk_att( RED, BROWN + BRIGHT ),
  183.  "\n\t3. " );
  184.  
  185.    c_printf( mk_att( RED, WHITE + BRIGHT ),
  186.  "A full color version of gets which allows the use of user input\n" );
  187.  
  188.    c_printf( mk_att( RED, WHITE + BRIGHT ),
  189.  "\t\tusing a desired attribute or at least not destroying the current\n" );
  190.  
  191.    c_printf( mk_att( RED, WHITE + BRIGHT ),
  192.  "\t\tscreen attibute.                                                \n" );
  193.  
  194.    uc_key();
  195.  
  196.  
  197.    cls_clr( mk_att( CYAN, BROWN + BRIGHT ) );
  198.  
  199.    c_printf( mk_att( CYAN, BROWN + BRIGHT ),
  200.    "\n\n\t\tNow try typing in a string with the c_gets function.\n\n" );
  201.  
  202.    i = c_gets( mk_att( CYAN, BLACK ), in_str );
  203.  
  204.    c_printf( mk_att( CYAN, BROWN + BRIGHT ),
  205.    "\n\n\tThe string you typed had " );
  206.  
  207.    c_printf( mk_att( CYAN, RED + BRIGHT ),
  208.     "%d", i );
  209.  
  210.    c_printf( mk_att( CYAN, BROWN + BRIGHT ),
  211.     " characters and was\n\t" );
  212.  
  213.    c_printf( mk_att( CYAN, BLUE + BRIGHT ),
  214.     "<%s>", in_str );
  215.  
  216.    c_printf( mk_att( CYAN, BROWN + BRIGHT ), "\n\n" );
  217.  
  218.    c_printf( mk_att( CYAN, BROWN + BRIGHT ),
  219.    "\n\n\tDid you try to edit your string?  If not why not try again.\n\n" );
  220.  
  221.    i = c_gets( mk_att( CYAN, BLACK ), in_str );
  222.  
  223.  
  224.    c_printf( mk_att( CYAN, BROWN + BRIGHT ),
  225.    "\n\n\tThe string you typed had " );
  226.  
  227.    c_printf( mk_att( CYAN, RED + BRIGHT ),
  228.     "%d", i );
  229.  
  230.    c_printf( mk_att( CYAN, BROWN + BRIGHT ),
  231.     " characters and was\n\t" );
  232.  
  233.    c_printf( mk_att( CYAN, BLUE + BRIGHT ),
  234.     "<%s>", in_str );
  235.  
  236.    c_printf( mk_att( CYAN, BROWN + BRIGHT ), "\n\n" );
  237.  
  238.    uc_key();
  239.    if ( sound_on )
  240.       uc_error();
  241.  
  242.    cls_clr( mk_att( GREEN, BLUE + BRIGHT ) );
  243.  
  244.    c_printf( mk_att( GREEN, BLUE + BRIGHT ),
  245.    "\n\n\n\t\tAs you can see these three functions provide considerable\n" );
  246.  
  247.    c_printf( mk_att( GREEN, BLUE + BRIGHT ),
  248.    "\t\tcontrol over how the screen appears and this degree of\n" );
  249.  
  250.    c_printf( mk_att( GREEN, BLUE + BRIGHT ),
  251.    "\t\tcontrol is easy to achieve as you will see when you\n" );
  252.  
  253.    c_printf( mk_att( GREEN, BLUE + BRIGHT ),
  254.    "\t\tlook at the source code for this demo.\n" );
  255.  
  256.    uc_key();
  257.    if ( sound_on )
  258.       uc_ok();
  259.  
  260.    c_printf( mk_att( GREEN, WHITE + BRIGHT ),
  261.    "\n\n\t\tNext we will look at some of the functions designed\n" );
  262.  
  263.    c_printf( mk_att( GREEN, WHITE + BRIGHT ),
  264.    "\t\tfor general string handling and manipulation.\n" );
  265.  
  266.    c_printf( mk_att( GREEN, WHITE + BRIGHT ),
  267.    "\t\tThe source code for all of the demo programs is provided\n" );
  268.  
  269.    c_printf( mk_att( GREEN, WHITE + BRIGHT ),
  270.    "\t\t